home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C++ / Applications / Nuntius 1.2 / src / Nuntius / FastBits.cp < prev    next >
Encoding:
Text File  |  1994-02-20  |  1.2 KB  |  58 lines  |  [TEXT/MPS ]

  1. // Copyright © 1992 Peter Speck, speck@dat.ruc.dk. All rights reserved.
  2. // FastBits.cp
  3.  
  4. #include "FastBits.h"
  5. #include "Tools.h"
  6.  
  7. #include <Resources.h>
  8.  
  9. #pragma segment MyTools
  10.  
  11. BitMap gFastBitsSicnBitMap;
  12.  
  13. TLongintList *gSicnBitmapCache = nil;
  14.  
  15. void InitUFastBits()
  16. {
  17.     gFastBitsSicnBitMap.rowBytes = 2;
  18.     gFastBitsSicnBitMap.bounds = CRect(0, 0, 16, 16);
  19.     TLongintList *lList = new TLongintList();
  20.     lList->ILongintList();
  21.     gSicnBitmapCache = lList;
  22. }
  23.  
  24. void InitializeSicnFastBits(SicnFastBits &sicnFastBits)
  25. {
  26.     sicnFastBits.fBits = nil;
  27.     sicnFastBits.fRsrcID = 0;
  28. }
  29.  
  30. void GetNewSicnFastBits(SicnFastBits &fb, short id)
  31. {
  32.     fb.fRsrcID = id;
  33.     Handle h = GetResource('ics#', id);
  34.     FailNILResource(h);
  35.     if (gSicnBitmapCache->GetSize())
  36.         fb.fBits = Ptr(gSicnBitmapCache->Pop());
  37.     else
  38.         fb.fBits = NewPermPtr(64);
  39.     BytesMove(*h, fb.fBits, 64);
  40. }
  41.  
  42. void DisposeSicnFastBits(SicnFastBits &fb)
  43. {
  44.     if (fb.fBits)
  45.         gSicnBitmapCache->Push(long(fb.fBits));
  46.     fb.fBits = nil;
  47. }
  48.  
  49. void DrawSicnFastBits(BitMap *portBitsP, const SicnFastBits &fb, CRect srcRect, CRect destRect)
  50. {
  51. #if qDebug
  52.     if (!portBitsP)
  53.         ProgramBreak("portBitsP == nil");
  54. #endif
  55.     gFastBitsSicnBitMap.baseAddr = fb.fBits;
  56.     CopyBits(gFastBitsSicnBitMap, *portBitsP, srcRect, destRect, srcCopy, nil);
  57. }
  58.